PL wiki

타입에 대한 내재적 관점과 외재적 관점

내재적(intrinsic) 관점과 외재적(extrinsic) 관점은 타입 이론에서 타입을 보는 두가지 관점이다.

내재적 관점은 "intrinsically typed", "처치 스타일(types à la Church)", "타입 검사 시스템(type checking system)", 외재적 관점은 "extrinsically typed", "커리 스타일(types à la Curry)", "타입 할당 시스템(type assignment system)" 등으로 불린다 [4, chap. DeBruijn, 3:8–9].

예시 : 단순 타입 λ-계산

단순 타입 λ-계산타입 시스템은 다음과 같이 두가지 방식으로 제시 될 수 있다.

내재적 타입 시스템

\[ \begin{array}{ll} A, B &::= A \to B \mid \ldots \\ M, N &::= \lambda x:A. M \mid M \ N \end{array} \] \[ \begin{prooftree} \AXC{$\Gamma , x:A \vdash M : B$} \UIC{$\Gamma \vdash \lambda x:A. M : A \to B$} \end{prooftree} \quad \begin{prooftree} \AXC{$\Gamma \vdash M : A \to B$} \AXC{$\Gamma \vdash N : A$} \BIC{$\Gamma \vdash M \ N : B$} \end{prooftree} \]

외재적 타입 시스템

\[ \begin{array}{ll} A, B &::= A \to B \mid \ldots \\ M, N &::= \lambda x. M \mid M \ N \end{array} \] \[ \begin{prooftree} \AXC{$\Gamma , x:A \vdash M : B$} \UIC{$\Gamma \vdash \lambda x. M : A \to B$} \end{prooftree} \quad \begin{prooftree} \AXC{$\Gamma \vdash M : A \to B$} \AXC{$\Gamma \vdash N : A$} \BIC{$\Gamma \vdash M \ N : B$} \end{prooftree} \]

타입 유일성

내재적 시스템에서는 타입의 유일성이 성립한다.

If \(\Gamma \vdash M : A\) and \(\Gamma \vdash M : B\), then \(A = B\)

외재적 시스템에서는 이러한 타입의 유일성이 성립하지 않는다.

증명보조기에서 내재적 타입 시스템의 구현

의존 타입이 있는 증명보조기에서 내재적인 타입 시스템을 형식화하는 경우, 항과 판단의 구분을 두지 않고 의존 타입을 이용해 형식화 하는 경우가 많다 [2, 4].

비교

[1, 2, 4] 등에서 내재적 타입 시스템과 외재적 타입 시스템을 비교하고 있다.

외부 링크

참고문헌

[1]
Andreas Abel. 2013. Normalization by Evaluation: Dependent Types and Impredicativity. Habilitation thesis. Ludwig-Maximilians-Universität München. Retrieved from http://www.cse.chalmers.se/~abela/habil.pdf
[2]
Andreas Abel, Guillaume Allais, Aliya Hameer, Brigitte Pientka, Alberto Momigliano, Steven Schäfer, and Kathrin Stark. 2019. POPLMark reloaded: Mechanizing proofs by logical relations. Journal of Functional Programming 29, (2019), e19. https://doi.org/10.1017/S0956796819000170
[3]
Derek Dreyer, Simon Spies, Lennard Gäher, Ralf Jung, Jan-Oliver Kaiser, Hoang-Hai Dang, David Swasey, and Jan Menz. 2022. Semantics of type systems lecture notes. Retrieved from https://plv.mpi-sws.org/semantics-course/
[4]
Philip Wadler, Wen Kokke, and Jeremy G. Siek. 2022. Programming language foundations in Agda. Retrieved from https://plfa.inf.ed.ac.uk/22.08/